

//
//  Date+Extension.swift
//  Sina
//
//  Created by YYY on 2017/9/12.
//  Copyright © 2017年 成品家（北京）网路科技有限公司. All rights reserved.
//

import Foundation

//日期格式化器，不要频繁释放和创建，影响性能（单例）。
private let dateFormatter = DateFormatter()

//当前日历对象
let calendar = Calendar.current

extension Date
{
    //静态函数
    //计算与当前系统时间相差interval秒数的日期字符串
    //swift中，如果要定义结构体的类函数，使用static修饰
    static func sinaDateConvertToString(interval: TimeInterval) -> String
    {
        let date = Date(timeIntervalSinceNow: interval)
        
        //指定日期格式
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return dateFormatter.string(from: date)
    }
    
    /// 将新浪格式的字符串转换成日期
    ///
    /// - Parameter string: 字符串时间
    /// - Returns: 日期
    static func sinaStringConvertToDate(string: String) -> Date?
    {
        //设置日期格式
        dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss zzzz yyyy"
        //转换并返回日期
        return dateFormatter.date(from: string)
    }
    
    var dateDescription: String
    {

        /*
         刚刚（一分钟内）
         x分钟前（一小时内）
         x小时前（当天）
         昨天 HH:mm(昨天)
         MM-dd HH:mm（一年内）
         yyyy-MM-dd HH:mm(更早期)
         */
        //判断日期是否是今天
//        if calendar.isDateInToday(self)
//        {
//            let interval = -Int(self.timeIntervalSinceNow)
//            if interval < 60
//            {
//                return "刚刚"
//            }
//            if interval < 3600
//            {
//                return "\(interval/60) 分钟前"
//            }
//            return "\(interval/3600) 小时前"
//        }
        var fmt = " HH:mm"
        if calendar.isDateInYesterday(self)
        {
            fmt = "昨天" + fmt
        }
        else
        {
            fmt = "MM-dd HH:mm"
            let year = calendar.component(.year, from: self)
            let thisYear = calendar.component(.year, from: Date())
            if year != thisYear
            {
                fmt = "yyyy-" + fmt
            }
        }
        //设置日期格式字符串
        dateFormatter.dateFormat = fmt
        return dateFormatter.string(from: self)
    }
    
}
